// 创建实例
const instance = axios.create({
    baseURL: 'http://leafdomain.cn:8085/'
});

// 添加请求拦截器
instance.interceptors.request.use(function (config) {
    const token = localStorage.getItem('blogToken');
    if (token) {
        config.headers.authorization = token;
    }
    return config;
});

// 添加响应拦截器
instance.interceptors.response.use(function (resp) {
    // 2xx 范围内的状态码都会触发该函数。
    // 对响应数据做点什么
    return resp.data; // 仅得到响应体中的data属性
}, function (error) {
    // 超出 2xx 范围的状态码都会触发该函数。
    // 对响应错误做点什么
    const code = error.message.match(/[0-9]{3}/g)[0];
    if(code === "401") {
        location.href = "./login.html";
    } else if(code === '500') {
        alert(error.message);
    }
    return error;
});

/**
 * 根据分类标签获取文章标题(可能多个)
 * @param {string} tag // 文章标签, 逗号分隔
 */
export async function getTitle(classify) {
    const resp = await instance.get('/markdown/getTitle', {
        params: { 
            classify
        },
    });
    return resp;
}

/**
 * 上传md文件
 * @param {object} mdInfo // 文章信息
 */
export async function upload(mdInfo) {
    const resp = await instance.post('/markdown/upload', mdInfo);
    return resp;
}

/**
 * 根据标题获取文章(唯一)
 * @param {string} title // 文章标题
 */
export async function getArticle(title) {
    const resp = await instance.get('/markdown/getBlog', {
        params: { // 这里可以配置 query，axios会自动将其进行Url编码
            title
        },
    });
    return resp;
}

/**
 * 返回数组形式的分类标签
 * @returns 分类
 */
export async function getClassifications() {
    const resp = await instance.get('/markdown/getClassify');
    return resp;
}

/**
 * 返回删除文章的是否成功
 * @param {string} title 文章标题
 * @returns 
 */
export async function delBlog(title) {
    const resp = await instance.delete('/markdown/delBlog', {
        params: {
            title
        }
    });
    return resp;
}